package genetics;

/**
 * Genotype
 * 
 * @author Nicolas Winkler
 * 
 */
public abstract class HaploidAttribute {

	public enum HaploidisizeType {
		DOMINANT, RECESSIVE, INTERMEDIARY
	}

	/**
	 * determines weather this haploid attribute is dominant or recessive
	 */
	public HaploidisizeType dominantRecessive;

	/**
	 * @return the description of this attribute
	 */
	public String getDescription() {
		return this.getClass().getSimpleName();
	}

	/**
	 * clones an attribute
	 * 
	 * @return the clone
	 */
	public abstract HaploidAttribute mitosis();

	/**
   * creates a new {@link HaploidAttribute} which is created
   * by combining two old attributes.
   *
	 * @param b
	 * @return
	 */
	public abstract HaploidAttribute intermediary(HaploidAttribute b);
}
